﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Domain.MainModule.Entities;

namespace Application.MainModule.BillingInformationManagement
{
    public interface IBillingInformationManagementService
    {
        /// <summary>
        /// Add new billing information 
        /// </summary>
        /// <param name="billingInformation">BillingInformation to be added</param>
        void AddBillingInformation(BillingInformation billingInformation);

        /// <summary>
        /// Change existing billing information
        /// </summary>
        /// <param name="billingInformation">Existing billing information to modify</param>
        void ChangeBillingInformation(BillingInformation billingInformation);

        /// <summary>
        /// Remove existing billing information
        /// </summary>
        /// <param name="billingInformation">BillingInformation to remove</param>
        void RemoveBillingInformation(BillingInformation billingInformation);

        BillingInformation FindBillingInformationByIdSpecification(Guid userId);

        List<BillingInformation> FindBillingInformationCompanyName(string companyName);
        
        List<BillingInformation> FindBillingInformationCUIT(string cuit);

        List<BillingInformation> FindBillingInformationGroupBranchId(Guid groupBranchId);
        
        List<BillingInformation> FindPagedBillingInformation(int pageIndex, int pageCount);
    }
}
